#include <stdio.h>
#include <stdlib.h>


typedef struct linknode
{
	int data;
	struct linknode *next;
}link_node;

link_node *creat()
{
	link_node *H=(link_node *)malloc(sizeof(link_node));
	H->data=0;
	H->next=NULL;

	return H;
}

int insert(link_node *H,int mydata)
{
	link_node *p=(link_node *)malloc(sizeof(link_node));
	link_node *q=H;
	while(H->next!=NULL)
	{
		H=H->next;
	}
	p->next=NULL;
	H->next=p;
	p->data=mydata;
	q->data++;

	return 0;
}

int view(link_node *H)
{
	link_node *p=H;
	while(p->next!=NULL)
	{
		p=p->next;
		printf("%d ",p->data);

	}
	putchar(10);

	return 0;
}


int returnlink(link_node *H,int num)
{
	int flag=H->data/num;
	printf("%d\n",flag);
	link_node *h=H;
	link_node *q=H->next;
	link_node *a=NULL;

	int nums = 0;
	for(int i=0;i<flag;i++)
	{
		printf("****num=%d\n",nums++);
		for(int j=0;j<num-1;j++)
		{
			link_node *p=(link_node *)malloc(sizeof(link_node));
			p->data=q->next->data;
			printf("***p->data:%d\n",p->data);
			printf("***h->data:%d\n",h->data);
			a=q->next;
			q->next=a->next;
			free(a);
			p->next=h->next;
			h->next=p;				
		}
		h=q;
		q=q->next;
	}

	return 0;
}


int main(int argc, const char *argv[])
{
	link_node *H=creat();
	insert(H,1);
	insert(H,2);
	insert(H,3);
	insert(H,4);
	insert(H,5);
	insert(H,6);
	insert(H,7);
	insert(H,8);
	view(H);

	int num=0;
	scanf("%d",&num);
	returnlink(H,num);

	view(H);
	return 0;
}
